/**
 * 测试系统函数的代码。
 * @type {{data: number[], sum: number}}
 */

function add(a, b) {
    return a + b;
}

function main() {
    let tips = {data: [1, 2, 3, 4], sum: 0};
    tips.code = 0;
    tips.sum = 0;
    // tips.sum = tips.data[0] + tips.data[1] + tips.data[2] + tips.data[3];
    // tips.sum = add(tips.data[0], tips.data[1]);
    tips.index = 0;
    tips.data.forEach((item, index) => {
        tips.sum = tips.sum + item;
        tips.index = tips.index + index;
    });

    tips.data.push(5);
    tips.data = tips.data.filter((item, index) => {
        return index > 1
    });


    // tips.map = tips.data.map(item =>  item + 1 );
    // tips.map2 = tips.data.map(item =>  item + 2 );

    // tips.filter = tips.data.filter(item => item > 3);
    // tips.length = tips.data.length;
    // tips.push = [];
    // tips.data.forEach(item => tips.push.push(item));
    return tips;
}

main();

/*
function Fib (n) {
    if ( n <= 1 ) {
        return 1;
    }
    return Fib(n - 1) + Fib(n - 2);
}

let result = Fib(25);
*/
/**
 * 1、MemberExpression就好好正常执行就行了。不要做太多instance判断。
 * 对象访问这里不太优雅。使用优雅方式实现。
 *
 * 2、然后函数注册，使用run(arg1),run(arg1,arg2)，不用其他的。
 * 用java类去提取出参数化。脚本调用时直接判断兼容性。简化系统注册调用和脚本调用两种方式的便捷性。
 * 可以启动时注册到函数列表。java调用就当原生java。获取函数单例调用。
 *
 */